package com.weiss.jpro.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_shop")

public class Shop implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 商铺名称
     */
    private String name;

    /**
     * 商铺类型的id
     */
    private Long typeId;

    /**
     * 商铺图片，多个图片以','隔开
     */
    private String images;

    /**
     * 商圈，例如陆家嘴
     */
    private String area;

    /**
     * 地址
     */
    private String address;

    /**
     * 经度
     */
    private Double x;

    /**
     * 维度
     */
    private Double y;

    /**
     * 均价，取整数
     */
    private Long avgPrice;

    /**
     * 销量
     */
    private Integer sold;

    /**
     * 评论数量
     */
    private Integer comments;

    /**
     * 评分，1~5分，乘10保存，避免小数
     */
    private Integer score;

    /**
     * 营业时间，例如 10:00-22:00
     */
    private String openHours;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    // @TableField(exist = false) 是 MyBatis-Plus 框架中的一个注解，用于标记实体类中的某个字段不属于数据库表中的字段。具体来说，它的作用包括以下几点：
    // 标记非数据库字段：当实体类中存在一些字段，它们仅用于程序逻辑，而不需要映射到数据库表中时，可以使用这个注解
    // 避免 SQL 错误：在执行数据库操作（如插入、更新）时，MyBatis-Plus 会忽略这些被标记为 exist = false 的字段，从而避免因字段不存在而导致的 SQL 错误
    // 灵活处理业务逻辑：允许开发者在实体类中添加一些用于业务逻辑的字段，这些字段不会干扰与数据库的交互
    @TableField(exist = false)
    private Double distance;
}
